package com.booby.algorithm.selection;

import com.booby.algorithm.utils.Utils;

/**
 * 功能描述: 选择排序，一次循环同时排最大和最小值
 *
 * @author: lizt
 * @date: 2020/7/31 13:46
 **/

public class DoubleMinMax {

    private static Integer[] arr = {5,7, 3, 2,6, 1, 9, 8,6, 7, 4};
    public static void main(String[] args) {
//        System.out.print("初始值：");
//        Utils.print(arr);
        sorted(arr);
    }

    public static void sorted(Integer[] arr){
        int len = arr.length;
        int minIndex = 0;
        int maxIndex = arr.length-1;
        for (int k=0; k<len-1 && minIndex<maxIndex; k++) {
//        for (int k=0; k<len-1; k++) {
//            System.out.println("=====K" + k);
            for (int i = k; i < maxIndex; i++) {
                // 当前元素和集合中的两个方向相邻的元素进行比较，获取最小最大值
                if (arr[minIndex] > arr[i]) {
                    Utils.swap(arr, minIndex, i);
                }
                if (arr[maxIndex] < arr[i]) {
                    Utils.swap(arr, maxIndex, i);
                }
//                Utils.print(arr);
            }
            minIndex++;
            maxIndex--;
//            Utils.print(arr);
        }
    }
}
